#ifndef MEMORY_H
#define MEMORY_H

void * kernel_start, * kernel_end;

void init_memory(void);

uint8_t * memalloc(const uint32_t count, uint8_t alignment);
bool memfree(const uint8_t * const mem, const uint32_t count);

bool set_usable_memory(const uint32_t mem, const uint32_t count);
bool find_usable_memory(const uint32_t mem, const uint32_t count);

void set_memory_16(const uint8_t * const mem, const uint16_t val, const uint32_t count);
void clear_memory(const uint8_t * const mem, const uint32_t count);
void copy_memory(const uint8_t * const dst, const uint8_t * const src, const uint32_t count);
uint8_t compare_memory(const uint8_t * const mem1, const uint8_t * const mem2, const uint32_t count);
uint32_t strlen(const char * const str);

#endif

